우선, 이벤트 통합 메서드는 JQuery 1.7 이후 버젼부터 사용이 가능합니다. 기존의 이벤트의 핸들러 함수로는
bind(),
live(),
delegate()가 있죠. 이 방법들 역시 사용이 가능하나 기능이 축소 및 변경되었기 때문에 앞으로는 통합 메소드
on() 을 사용하시기 바랍니다. 1.7 이후부터는 사용방법이 조금 바뀌었습니다. 어떻게 사용하는지 아래 예제를 참고하세요.
# jQuery 통합메서드 on(), off() 알아보기
먼저 on() 또는 off()는 아래와 같은 문법으로 사용됩니다.
$(선택요소).on('click', function() {
// 실행할 구문
});
이 방법은 좀 더 쉽게 알아보기 위해서 아래 예제 소스 코드를 참고하세요!
# on() 이벤트 통합 메서드 예제 소스 보기
아래 예제는 간단한 버튼 클릭 예제입니다. 클릭할 경우 클릭되었다는 경고창을 불러오게됩니다. 매우 간단하죠. 중요한 부분은 on() 메소드를 사용하였다는 점 하나입니다.
<div>
<button id="test">Click Me!</button>
</div>
아래는 스크립트 코드입니다.
@ onEvent.js
$( '#test').on('click', function() {
// 클릭시 경고창을 출력하는 이벤트 등록
alert('Clicking!');
})
버튼을 클릭하면 어떻게 될가요? Clicking! 이라는 메시지창이 alert() 함수로 호출됩니다. 그럼 반대로 이벤트를 제거하는 방법을 알아보겠습니다.
# 이벤트 제거하기 off() 통합 메서드
위와 반대로 이벤트를 해제하는 이벤트 핸들러 제거함수는 off()입니다. 이 함수 역시 통합 메서드입니다. 사용방법은 아래와 같습니다.
<div>
<button id="test">Click Event Remove!</button>
</div>
아래는 이벤트를 제거하는 off() 메소드의 스크립트 코드입니다.
$('#test').off('click');
// 해당 엘리먼트의 클릭이벤트를 제거함
이제 위 소스 코드의 실행으로 on() 이벤트는 모두 제거되었습니다. 이제 기존의 버튼 클릭시 나오던 경고창과 Clicking 메시지는 더이상 나오지 않게됩니다.
# 마치면서
이처럼 이벤트를 바인딩하는 경우 성능 및 메모리에 영향을 미치기때문에 사용하지 않거나 제거가 필요한 경우에 반드시 off()를 사용하여 제거해야합니다. 작은 어플리케이션의 경우 영향이 크지 않으나 큰 어플리케이션의 경우 그 차이가 클 수 있습니다.